//
// Created by ls on 23-12-24.
//
#include <iostream>
#include <deque>


// deque 容器的插入和删除
void printDeque(const std::deque<int> &d)
{
  for (const auto &it : d) {
    std::cout << it << " ";
  }
  std::cout << std::endl;
}

// 两端操作
void test01()
{
  std::deque<int> d1;
  // 尾插
  d1.push_back(10);
  d1.push_back(20);
  d1.push_back(30);
  d1.push_back(40);
  d1.push_back(50);

  // 头插
  d1.push_front(100);
  d1.push_front(200);
  d1.push_front(300);
  d1.push_front(400);
  d1.push_front(500);

  printDeque(d1);

  d1.pop_back();
  d1.pop_front();
  printDeque(d1);

  d1.insert(d1.begin(), 1000);
  printDeque(d1);

  d1.insert(d1.begin(), 2, 10000);
  printDeque(d1);

  // 按照区间进行插入
  std::deque<int> d2;
  d2.push_back(1);
  d2.push_back(2);
  d2.push_back(3);

  d1.insert(d1.begin(), d2.begin(), d2.end());
  printDeque(d1);
}

void test02()
{
  std::deque<int> d1;

  // 尾插
  d1.push_back(10);
  d1.push_back(20);
  d1.push_back(30);
  d1.push_back(40);
  d1.push_back(50);

  // 删除
  auto it = d1.begin();
  it++;
  d1.erase(it, d1.end());
  printDeque(d1);
}

int main()
{
//  test01();
  test02();
  return 0;
}